/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package projeto.classes;

import br.com.fatecpg.mdi.Conexão;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;


public class ConhecimentoTransporteAcessaDados {
    
    private Conexão conexao = new Conexão();
    private Connection conn;
    private PreparedStatement pstmt;
    
    public boolean incluir(ModeloConhecimentoTransporte ct) throws SQLException {
        String insertSql = "INSERT INTO conhecimento_transporte(CLIENTE_id_cliente, MOTORISTA_id_motorista, dt_ordem_servico, vl_total_ordem_servico, nm_origem, nm_destino, qt_peso_total, VEICULO_id_veiculo, ANIMAL_id_animal, qt_total_animal) " +
                "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        try {
            conn = conexao.getConexao();
            //conn = conexao.getConectar;
            pstmt = conn.prepareStatement(insertSql);
            pstmt.setInt(1, ct.getClienteId());
            pstmt.setInt(2, ct.getMotoristaId());
            pstmt.setString(3, ct.getData());
            pstmt.setFloat(4, ct.getValor());
            pstmt.setString(5, ct.getOrigem());
            pstmt.setString(6, ct.getDestino());
            pstmt.setFloat(7, ct.getPeso());
            pstmt.setInt(8, ct.getVeiculoId());
            pstmt.setInt(9, ct.getAnimalId());
            pstmt.setInt(10, ct.getQuantidadeAnimais());
            
            return pstmt.execute();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            conexao.fecharConexao();
        }
    }
    
    public int alterar(ModeloConhecimentoTransporte ct) throws SQLException {
        String updateSql = "UPDATE conhecimento_transporte SET CLIENTE_id_cliente = ?, MOTORISTA_id_motorista = ?, dt_ordem_servico = ?, vl_total_ordem_servico = ?, nm_origem = ?, nm_destino = ?, qt_peso_total = ?, VEICULO_id_veiculo = ?, ANIMAL_id_animal = ?, qt_total_animal = ? " +
               "WHERE id_transporte = ?";
        try {
            conn = conexao.getConexao();
            pstmt = conn.prepareStatement(updateSql);
            pstmt.setInt(1, ct.getClienteId());
            pstmt.setInt(2, ct.getMotoristaId());
            pstmt.setString(3, ct.getData());
            pstmt.setFloat(4, ct.getValor());
            pstmt.setString(5, ct.getOrigem());
            pstmt.setString(6, ct.getDestino());
            pstmt.setFloat(7, ct.getPeso());
            pstmt.setInt(8, ct.getVeiculoId());
            pstmt.setInt(9, ct.getAnimalId());
            pstmt.setInt(10, ct.getQuantidadeAnimais());
            pstmt.setInt(11, ct.getId());
            
            return pstmt.executeUpdate();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            conexao.fecharConexao();
        }
    }
    
    public ArrayList<ModeloConhecimentoTransporte> consulta(String filtro) throws SQLException{
        ArrayList<ModeloConhecimentoTransporte> lista = new ArrayList<ModeloConhecimentoTransporte>();
        String selectSql = "SELECT * FROM conhecimento_transporte WHERE " + filtro;
        ResultSet retornoConsulta = null;
        
        try {
            conn = conexao.getConexao();
            pstmt = conn.prepareStatement(selectSql);
            retornoConsulta = pstmt.executeQuery();
            
            while (retornoConsulta.next()) {
                ModeloConhecimentoTransporte ct = new ModeloConhecimentoTransporte();
                ct.setId(retornoConsulta.getInt(1));
                ct.setClienteId(retornoConsulta.getInt(2));
                ct.setMotoristaId(retornoConsulta.getInt(3));
                ct.setData(retornoConsulta.getString(4));
                ct.setValor(retornoConsulta.getFloat(5));
                ct.setOrigem(retornoConsulta.getString(6));
                ct.setDestino(retornoConsulta.getString(7));
                ct.setPeso(retornoConsulta.getInt(8));
                ct.setVeiculoId(retornoConsulta.getInt(9));
                ct.setAnimalId(retornoConsulta.getInt(10));
                ct.setQuantidadeAnimais(retornoConsulta.getInt(11));
               
                lista.add(ct);
            }
            
            return lista;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            if (retornoConsulta != null) {
                retornoConsulta.close();
            }
            conexao.fecharConexao();
           
        }
    }
    
    public ArrayList<ModeloConhecimentoTransporte> consultaTodos() throws SQLException{
        ArrayList<ModeloConhecimentoTransporte> lista = new ArrayList<ModeloConhecimentoTransporte>();
        String selectSql = "SELECT * FROM conhecimento_transporte ORDER BY dt_ordem_servico ";
        ResultSet retornoConsulta = null;
        
        try {
            conn = conexao.getConexao();
            pstmt = conn.prepareStatement(selectSql);
            retornoConsulta = pstmt.executeQuery();
            
            while (retornoConsulta.next()) {
                ModeloConhecimentoTransporte ct = new ModeloConhecimentoTransporte();
                ct.setId(retornoConsulta.getInt(1));
                ct.setClienteId(retornoConsulta.getInt(2));
                ct.setMotoristaId(retornoConsulta.getInt(3));
                ct.setData(retornoConsulta.getString(4));
                ct.setValor(retornoConsulta.getFloat(5));
                ct.setOrigem(retornoConsulta.getString(6));
                ct.setDestino(retornoConsulta.getString(7));
                ct.setPeso(retornoConsulta.getInt(8));
                ct.setVeiculoId(retornoConsulta.getInt(9));
                ct.setAnimalId(retornoConsulta.getInt(10));
                ct.setQuantidadeAnimais(retornoConsulta.getInt(11));
                
                lista.add(ct);
            }
            
            return lista;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            if (retornoConsulta != null) {
                retornoConsulta.close();
            }
            conexao.fecharConexao();
           
        }
    }
    
    public int consultaMaxId() throws SQLException {
        String selectSql = "SELECT MAX(id_transporte) FROM conhecimento_transporte";
        ResultSet retornoConsulta = null;
        int maxID = 0;
        
        try {
            conn = conexao.getConexao();
            pstmt = conn.prepareStatement(selectSql);
            retornoConsulta = pstmt.executeQuery();
            
            if (retornoConsulta.next()) {
                maxID = retornoConsulta.getInt(1);
            }
            
            return maxID;
            
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            if (retornoConsulta != null) {
                retornoConsulta.close();
            }
            conexao.fecharConexao();
           
        }
    }
    
    public int deletar(int id) throws SQLException {
        String deleteSql = "DELETE FROM conhecimento_transporte WHERE id_transporte = ?";
        
        try {
            conn = conexao.getConexao();
            pstmt = conn.prepareStatement(deleteSql);
            pstmt.setInt(1, id);
            
            return pstmt.executeUpdate();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            conexao.fecharConexao();
           
        }
    } 
}
